上一回我們直接建立 Pod,刪掉後就真的消失了。這次換 Deployment 接手,看看它如何幫我們維持指定的 Pod 數量。
建立名為 web 的 Deployment,使用 Nginx 映像,並要求它維持兩個副本:
kubectl create deployment web --image=nginx:1.28 --replicas=2
kubectl rollout status deployment/web --timeout=120s
看到 successfully rolled out 代表這次部署已經完成。接著把 Deployment、ReplicaSet 和 Pod 一起列出來:
kubectl get deployments,replicasets,pods
它們的名稱雖然不同,卻是一層管一層:Deployment 管 ReplicaSet,ReplicaSet 再負責維持 Pod。也可以用標籤只找出這次建立的 Pod:
kubectl get pods -l app=web
從查詢結果複製其中一個完整名稱,把下面的 POD_NAME 換掉。刪除前先記住名稱,等等比較才看得出變化:
kubectl delete pod POD_NAME
kubectl get pods -l app=web
稍等一下再查,你會看到一個新名字的 Pod 被補回來。原本的 Pod 並沒有復活,是 ReplicaSet 發現少了一個副本,另外建立新的來補足數量。
所以不要把重要資料只放在 Pod 裡;新 Pod 不會自動帶回舊容器中的暫存檔案,需要保存的內容之後要另外處理。
接著把副本加到三個,等待全部完成後,再恢復成兩個:
kubectl scale deployment web --replicas=3
kubectl rollout status deployment/web --timeout=120s
kubectl get pods -l app=web
kubectl scale deployment web --replicas=2
最後保留 web,下一篇還要替它加上 Service。如果新 Pod 一直沒有啟動,先用 kubectl describe pod 查看事件,不要看到控制器存在,就認為部署一定成功。
在光緒二十六年, 神助拳義和團
扶清滅洋, 五十五天在北京
天無雨, 地焦旱
鬼子眼珠皆發藍
神仙發愁, 一同下山把道傳
非是邪、非白蓮, 口念咒語法真言
升黃表、敬香煙, 請來各洞諸神仙
弟子同心苦用功, 遍地草木化成兵, 憑仙人之藝, 定滅洋人一掃平
慈禧太后發令, 義和團向前進
要把洋鬼子全都趕出北京!
兵法藝、都學全, 平定鬼子不費難
大法國、心膽寒, 英美德俄盡消然
拆鐵道、拔線杆, 快毀壞火輪船
洋鬼子、盡除完, 大清一統江山
最可恨那毒蛇猛兽, 吃尽我们血肉
热血已沸腾
五十五天在北京
扶清滅洋, 五十五天在北京
什麼鬼